home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Game / S / Super MZ.cpt / Super MZ / Super MZ doc part 1 < prev    next >
Text File  |  1986-11-08  |  27KB  |  646 lines

  1. %skip 5
  2.                          Super MANDELZOOM
  3.  
  4.                           for the Apple Macintosh
  5.  
  6.                         by Robert P. Munafo
  7.  
  8. %skip 15
  9.                              Abstract
  10.  
  11.  
  12.           The Mandelbrot Set and a program for plotting pictures of it are described.  The
  13.  
  14.         program presents a simple, modeless user interface which allows the user to easily select
  15.  
  16.         the desired region to plot on the screen, adjust the settings and shading tables used to
  17.  
  18.         draw it, and select portions of the image to be drawn in greater detail.  The user may
  19.  
  20.         select a point in the image and obtain its count value, the period of its attractor and
  21.  
  22.         a plot of its Julia curve.  The program has highly optimized math routines, and a
  23.  
  24.         sophisticated executive which prioritizes the execution of multiple commands from the
  25.  
  26.         user.
  27.  
  28. %page
  29. Mathematical Background
  30. ------------ ----------
  31.  
  32.  
  33.    The Mandelbrot Set is named after mathematician Benoit B. Mandelbrot, who discovered it during his research of
  34.  
  35. a class of fractals called the Julia fractal curves.  Mandelbrot describes the Julia curves and the Mandelbrot
  36.  
  37. Set (which he calls the "µ map") in his book, The Fractal Geometry of Nature (W.H. Freeman, 1983).
  38.                           --- ------- -------- -- ------
  39.  
  40.    The Mandelbrot Set is a connected set in the domain of complex numbers, the boundary of which is a fractal
  41.  
  42. curve.  (I will often refer to complex numbers as "points" because it is convenient to think of the complex
  43.  
  44. numbers as points on the complex number plane.)  For each complex number C, a sequence of "iterates" Z  is
  45.                                                       n
  46. defined as follows:
  47.  
  48.                      Z   =   0 + 0 i          for n = 0                (1a.)
  49.                       n
  50.          
  51.                              2
  52.                      Z   =   Z     + C        for n > 0                (1b.)
  53.                       n       n-1
  54.  
  55.  
  56. The complex number C is a member of the Mandelbrot Set if and only if
  57.  
  58.  
  59.                              lim   |Z |                        (2)
  60.                              n->∞  | n|
  61.  
  62.  
  63. is finite.  The bars indicate the magnitude of Z , that is,
  64.                         n
  65.  
  66.  
  67.                           |Z |            2    2
  68.                           | n|  =  sqr ( a  + b  )                    (3)
  69.  
  70.  
  71. where a is the real component and b the imaginary component of Z .  (I will refer to points in the Mandelbrot Set
  72.                                 n
  73.  
  74. as "member points.")  In practice, some large value "n_max" is chosen and Z      is used as an approximation to
  75.                                         n_max
  76.  
  77. (2) above.  For most member points, Z  will converge to an attractor, a repeating sequence of values.  The
  78.                      n
  79.  
  80. "period" of a point is the number of distinct points in the point's attractor.
  81.  
  82.  
  83.    If the computer is used to draw a picture showing all member points in black and all others white, the result
  84.  
  85. is a large solid black region, which Mandelbrot calls a "µ-molecule", with several much smaller solid black
  86.  
  87. regions nearby, each of which is a miniature of the main solid black region.  A µ-molecule is a solid black
  88.  
  89. cardiod-shaped figure with an infinite number of solid black circles touching it but not overlapping it or each
  90.  
  91. other.  (Mandelbrot describes a µ-molecule as "the union of an infinite number of maximal connected sets," each
  92.  
  93. of which is called a "µ-atom" and any two of which share at most one point between them.)  The point of contact
  94.  
  95. between two µ-atoms is called a "bond".  Although they appear to be seperate, all the µ-molecules are connected
  96.  
  97. to each other by infinitely thin "tendrils" of member points which do not belong to any µ-molecule, and whose
  98.  
  99. iterates don't converge to an attractor.
  100.  
  101.  
  102.    This alone makes for an interesting picture on the computer screen.
  103.  
  104.  
  105.    However, in this program (and in most other Mandelbrot Set programs) the image is made more interesting by
  106.  
  107. assigning colors to non-member points according to "how quickly" their iterates of Z diverge to infinity.  The
  108.  
  109. method most commonly used is to define a quantity called the "count" to be the highest value of n for which
  110.  
  111.  
  112.                              |Z |  <  4                        (4)
  113.                              | n|
  114.  
  115.  
  116. and then assign a different color to each possible value of the count (that is, one color for each positive
  117.  
  118. integer.)  This creates a striking set of concentric bands of different colors.  Different colors are assigned to
  119.  
  120. different bands in such a way as to make desired bands stand out, or to make all bands blend together as the user
  121.  
  122. wishes.  The boundaries between consecutive bands are actually the solutions to a class of functions called the
  123.  
  124. "leminiscates."  For each positive integer n there if a leminiscate L (C) corresponding to the nth band in the
  125.                                      n
  126. picture.  The first five leminiscates are as follows:
  127.  
  128.  
  129.                            L (C)  =  C                        (5a.)
  130.                              1
  131.  
  132.                                 2
  133.                          L (C)  =  C  + C                    (5b.)
  134.                           2
  135.  
  136.                                4      3    2
  137.                         L (C)  =  C  + 2 C  + C  + C                (5c.)
  138.                           3
  139.  
  140.                      8      7      6      5      4      3    2
  141.                   L (C)  =  C  + 4 C  + 6 C  + 6 C  + 5 C  + 2 C  + C  + C            (5d.)
  142.                    4
  143.  
  144.               16      15       14      13       12       11        10       9       8       7
  145.        L (C)  =  C   + 8 C   + 28 C  + 60 C   + 94 C  + 116 C   + 114 C   + 94 C  + 69 C  + 44 C
  146.         5                                                (5e.)
  147.                         6       5      4      3    2
  148.                       + 26 C  + 14 C  + 5 C  + 2 C  + C  + C
  149.  
  150.  
  151. L (C) = 4 is a perfect circle, L (C) = 4 is an ellipse, and L (C) = 4 is a sort of pear-shaped figure.  The
  152.  1                    2                 3
  153.  
  154. higher-ordered leminiscates generate increasingly convoluted curves which approach the Mandelbrot Set as a limit.
  155.  
  156. The way in which they do this is extremely elaborate, and they produce beautiful pitures when plotted on the
  157.  
  158. computer screen.
  159. %page
  160. Macintosh MANDELZOOM
  161. --------- ----------
  162.  
  163.  
  164.    When the user runs Super MANDELZOOM, it displays the viewing window on the left, and several sets of controls
  165.  
  166. on the right.  It then begins drawing a picture of the Mandelbrot Set.  At any time, the user may:
  167.  
  168.  
  169.    • Scroll the image in any direction;
  170.  
  171.    • Zoom in or out by a factor of two, or zoom out by a factor of 16;
  172.  
  173.    • Select a portion of the image, zoom in and make that portion fill the whole window;
  174.  
  175.    • Select a portion of the image and tell the program to draw that portion at higher resolution before it
  176.  
  177.      continues evaluating the rest of the image;
  178.  
  179.    • Select the value of n_max (options allow 100, 250, 500, or 1000);
  180.  
  181.    • Select the amount of precision to use in computing points (16-bit, 18-bit, 30-bit or 32-bit math);
  182.  
  183.    • Select one of six pre-defined shading tables (the program will redraw the picture quickly before continuing
  184.  
  185.      with the evaluation of points);
  186.  
  187.    • Modify the current shading table;
  188.  
  189.    • Select a point and find out the coordinates of the point, what the period of the attractor for that point
  190.  
  191.      is (if it's a member point) or what the value of "count" for that point is;
  192.  
  193.    • Select a point and view a plot of the Julia fractal curve corresponding to that point;
  194.  
  195.    • Quit the program;
  196.  
  197.    • Use the Macintosh system's built-in desk accessories and function keys;
  198.  
  199.    • Wait and do nothing.  In this case, the program will automatically:
  200.  
  201.     1. redraw the picture (if the user has just selected or modified a shading table,) then
  202.     
  203.     2. finish computing points in the selected portion of the image, then
  204.  
  205.     3. continue computing and drawing every point in the picture.  This is done first at very low resolution,
  206.     
  207.        then at low resolution, then at medium resolution, etc. until the whole picture has been evaluated at
  208.  
  209.        256x256 resolution.
  210.  
  211.  
  212.    The program has a 256x256 array in which it remembers the value of "count" for all points in the image, so the
  213.  
  214. image can be drawn again quickly with a new shading table.  Shading is done with "ordered dithering", which
  215.  
  216. allows a large number of different shades of gray to be displayed in the same image without sacrificing
  217.  
  218. resolution in areas which contain high-contrast boundaries.  Seventeen different shades are used.
  219.  
  220.  
  221.    SUPER MANDELZOOM is very fast - in benchmark tests it runs as fast as the equivalent written in C for a
  222.  
  223. dedicated VAX 11/780.  This high performance is realized because the program was written and highly optimized
  224.  
  225. in machine language, using 32-bit integer math.  The VAX, on the other hand, uses high precision floating-point
  226.  
  227. math; therefore although it is only as fast as the Mac it allows much more magnification.  The Mac is even faster
  228.  
  229. (three times as fast) when 16-bit math is used.
  230.  
  231.  
  232. Benchmarks
  233.  
  234.    BEWARE:  Like most statictics, benchmarks can be misleading.  These times were taken on a 512K Mac with the
  235.  
  236. old (64K) ROMs, without the "Mouse Point" display active or any desk accessories open, and without touching the
  237.  
  238. mouse or keyboard.  If you want to compare these times to another Mandelbrot Set program, you must have the
  239.  
  240. settings for the other program exactly as follows:  Square picture exactly 0.06250000 units long on each side,
  241.  
  242. centered at exectly  - 0.91656494 + 0.26464843 i, with maximum number of iterations equal to 500.  Note that on
  243.  
  244. machines with hardware color table mapping it won't take any time at all to "redraw" the picture.  This image is
  245.  
  246. the one on the front cover of the August 1985 Scientific American.
  247.  
  248.  
  249.           Resolution    32 bits      30 bits      18 bits      16 bits     Redraw Picture
  250.           ----------   ----------   ----------   ----------   ----------   --------------
  251.             16x16      6.6 sec.     4.8 sec.     4.7 sec.     2.6 sec.    0.5 sec.
  252.             32x32     24.5          17.7       16.6         8.5        1.2
  253.             64x64     93.6          66.7       63.3        29.4        3.4
  254.            128x128    243.1         174.6      168.6        79.3        9.2
  255.            256x256    732.5         525.4      508.8        239.9           27.5
  256.  
  257.  
  258. Based on this example, 256x256 is 3.02 times faster than 128x128, and 16-bit math is 3.06 times faster than
  259.  
  260. 32-bit math.  The reason 256x256 doesn't take 4 times longer than 128x128 is explained under the sub-heading
  261.  
  262. "_IDLE_MODE" in the "Program Implementation" section below.
  263.  
  264.  
  265.  
  266. Using the Program
  267. ----- --- -------
  268.  
  269.  
  270. Scrolling
  271.  
  272.    The four arrows arranged like IBM cursor-control keys are for scrolling.  Each will move by a distance equal
  273.  
  274. to 1/8 the size of the window and begin evaluating the section which has just "scrolled in".  If you scroll while
  275.  
  276. the computer is redrawing the picture (which happens when changing the shading table or using desk accessories,
  277.  
  278. see below) it will begin redrawing the picture again.
  279.  
  280.  
  281.  
  282. Zoom In and Zoom Out
  283.  
  284.    There are five large icons immediately adjacent to the scrolling arrows.  Clockwise from upper-right, they are
  285.  
  286. "Home", "Zoom Out 16", "Zoom Out 2", "Select and Zoom In", and "Zoom In 2".  Zoom In 2 and Zoom Out 2 change the
  287.  
  288. size of the image by a factor of two.  Home sets the center and size to the values they have when the program
  289.  
  290. first starts.  Zoom Out 16 zooms out four times, increasing the size by a factor of 16.  (Note that the size can
  291.  
  292. never be greater than 4.)  The Select and Zoom control is used as follows:
  293.  
  294.    1. Click on the icon.  The cursor will change to indicate the Mac is now waiting for you to select the region.
  295.  
  296.       (When you select Query, Julia, or Detail (explained below,) the cursor will change back to normal.)
  297.  
  298.    2. Press down the mouse button on the point which is to become the center of the picture.  Keep the mouse
  299.  
  300.       button pressed down.
  301.  
  302.    3. Move the mouse in any direction.  A square outline indicates what size the selection will be; move the
  303.  
  304.       mouse around to specify the correct size.  (The minimum allowed is 1/16 the width of the current picture;
  305.  
  306.       the mazimum allowed is twice the width of the current picture.)
  307.  
  308.    4. Release the mouse button.  The Mac will begin computing the new image.
  309.  
  310.    The default size for Select and Zoom is 1/16 - that is, if you just click the mouse and release it without
  311.  
  312. moving, it will zoom in by a factor of 16.  If you do this by accident, you can quickly restore the correct size
  313.  
  314. (but not the correct center position) with the Zoom Out 16 icon.
  315.  
  316.  
  317.  
  318. Query
  319.  
  320.    Below the icons used for zooming in and out are three more large icons used for special commands.  The one
  321.  
  322. on the left has a crosshairs cursor with a question mark next to it.  This is called the "Query" command.  If you
  323.  
  324. select this icon, then click on a point in the image with the mouse, the program will show:
  325.  
  326.    1. the coordinates of the point;
  327.  
  328.    2. the value of "count" for that point (if it is a member point, this value is infinity)
  329.  
  330.    3. an arrow indicating which line in the shading table window (see below) corresponds to this value of "count"
  331.  
  332.    4. the period of the attractor for the point (if the point is a non-member point, this is undefined.)  This
  333.  
  334. figure will not always be correct.  The closer a point is to the edge of a µ-atom, the harder it is to determine
  335.  
  336. the period.  For many points it is unsure about the period and will put a question mark after the answer.  For
  337.  
  338. other points it will report a value which is incorrect (in these cases, the value will not have a question mark,
  339.  
  340. and it will always be a multiple of the correct value.)  For many more points Query will give no value at all --
  341.  
  342. often in these cases the point is not actually a member point.
  343.  
  344.  
  345.  
  346. Julia
  347.  
  348.    Next to the Query command icon is an icon with a small picture of a Julia Fractal curve.  Select this icon,
  349.  
  350. then select a point in the image and the computer will draw in the picture window an outline of the Julia curve
  351.  
  352. corresponding to the point.  The method for producing a picture of a Julia curve is quite different from that for
  353.  
  354. drawing the Mandelbrot Set images - the picture is drawn in high resolution, but quite faintly (lots of points
  355.  
  356. missing) at first, and more and more well-defined the longer you wait.  You will have to click the mouse to make
  357.  
  358. the computer stop drawing the Julia curve and continue with the Mandelbrot Set image from where it left off.
  359.  
  360.    The algorithm used to compute the Julia curve is not very precise, and usually generates several (or many)
  361.  
  362. random isolated points which do not really "belong" to the Julia curve in question.
  363.  
  364.  
  365.  
  366. Detail
  367.  
  368.    Next to the Julia curve icon is an icon showing a low-resolution Mandelbrot Set image with a rectangular
  369.  
  370. portion in high resolution.  This is the "Detail" command.  Select the icon, then select a rectangular region in
  371.  
  372. the image (do this the same way you draw a rectangle in MacPaint.)  The program will then draw everything inside
  373.  
  374. the rectangle at twice the resolution it is currently drawn in.  When it is done doing this, it will resume
  375.  
  376. evaluating the rest of the image.
  377.  
  378.    This command can be very useful - suppose you're viewing a complex area of the Mandelbrot Set using 30-bit
  379.  
  380. math, n_max = 1000, and there is one area (say a small spiral-shaped feature near the bottom) which you are
  381.  
  382. waiting to see in high resolution.  30-bit math is very slow, and since the spiral is at the bottom you might
  383.  
  384. have to wait as much as half an hour before it is drawn even at 128x128 resolution.  Using the Detail command you
  385.  
  386. can have the computer work on the spiral right away.  Other things you should know about this command:
  387.  
  388.    • If you select another rectangle before the computer is done doing the first, the computer will stop doing
  389.  
  390.      the one it was working on, and will not go back to it unless you select it again later.
  391.  
  392.    • When you select or edit a shading table (see below,) the computer begins redrawing the picture with the new
  393.  
  394.      shading table.  You can select a rectangle while the computer is redrawing the picture, but it won't
  395.  
  396.      actually start evaluating the points in the rectangle until it is done redrawing the picture.  (Redrawing
  397.  
  398.      is fast, so this shouldn't be much of a problem.)
  399.  
  400.    • Detail can be run as many times as you want on any area of the image.  Suppose that areas "A" and "B" are
  401.  
  402.      currently drawn in 8x8 pixels.  After selecting "A", it will be drawn in 4x4 pixels.  Select area "A" again
  403.  
  404.      and it will be drawn in 2x2 pixels.  Then select areas "A" and "B" at the same time - area "A" will drawn
  405.  
  406.      in 1x1 pixels, and area "B" will be drawn in 4x4 pixels.
  407.  
  408.    • If a large percentage of points in the rectangular area you select are member points, Detail will be
  409.  
  410.      noticably slower.  The reason for this is that member points take a lot of iterations to compute.  You can
  411.  
  412.      make Detail run faster by avoiding member points, i.e. by dividing the region of interest into two or more
  413.  
  414.      pieces, each of which has relatively few member points in it.  Beware, however - if you avoid ALL of the
  415.  
  416.      member points, you might miss small features which are close to the Mandelbrot Set but which are not visible
  417.  
  418.      unless drawn in high resolution.
  419.  
  420.    • If you have a 128K Mac, Detail should be used to examine the ends of "cusps" and display the tip if it was
  421.  
  422.      missed by the main evaluation routine.  (On a 512K Mac these features will be found automatically by the
  423.  
  424.      _Q_SEARCH routine.)  For an explanation of this and of the "adjacency algorithm" which allows the program
  425.  
  426.      to avoid computing almost all "black points", read the sub-heading "_IDLE_MODE" in the Program Structure
  427.                                                 ~~~~~~~ ~~~~~~~~~
  428.      section near the end of this documentation.
  429.  
  430.  
  431.  
  432. Set n_max
  433.  
  434.    Below the three large command icons are four small buttons labelled "100", "250", "500", and "1000".  These
  435.  
  436. are for choosing n_max, i.e. the maximum number of iterations to be used in evaluating a point.  Note that when
  437.  
  438. you change n_max, the picture buffer is cleared, and the program has to recompute all points from scratch.
  439.  
  440.  
  441.  
  442. Set Number of Bits
  443.  
  444.    Below these are four more small buttons labeled "16", "18", "30", and "32".  These select how many bits
  445.  
  446. (binary digits) of accuracy to use in computations.  16 bits is fastest (by far,) 18 bits and 30 bits are both
  447.  
  448. about twice as slow, and 32 bits is three times as slow as 16.  In general, you should use the fastest setting
  449.  
  450. which is allowed given the current level of magnification that you're using.  This table provides a general
  451.  
  452. guideline:
  453.                    size                  magnification        use      relative time
  454.              ------------------------    --------------------   -------    -------------
  455.              4.0 down to .015              1 to 256         16 bits        1.00
  456.                   .0078                       512           18 bits        2.12
  457.              .0039 down to .00000095       1024 to 4,194,304    30 bits        2.19
  458.                 .00000023                  8,388,608        32 bits        3.05
  459.  
  460.  
  461.    The program will display an asterisk (*) after the value of the size for the current plot if you are not using
  462.  
  463. sufficiently precise math to get an accurate plot at 256x256 resolution.  This guideline is not always right -
  464.  
  465. in a few areas of the Mandelbrot Set it seems necessary to use one or two more bits of resolution than shown here.
  466.  
  467. (I have not been able to determine precisely which areas these are, but they seem to occur mostly near cusps in
  468.  
  469. areas near the leftmost part of the Mandelbrot set.)
  470.  
  471.    The "relative time" is based on the benchmarks above.  Note that 18-bit math is almost as slow as 30-bit math,
  472.  
  473. and is useful at only one level of magnification.  Similarly, 32-bit math is almost 40% slower than 30-bit math
  474.  
  475. but is only useful at one level of magnification.  Because of this, it is usually most convenient to use only
  476.  
  477. the 16 and 30 bit modes and not worry about the other two.
  478.  
  479.    Like "zoom" and "set n_max" commands, changing the number of bits causes the picture buffer to be cleared, and
  480.  
  481. all points to be recomputed from scratch.
  482.  
  483.  
  484.  
  485. Select Shading Table
  486.  
  487.    To the right of all of these buttons is a vertical row of six large icons labeled "1" through "6".  These
  488.  
  489. icons are for choosing which shading table to use.
  490.  
  491.  
  492.  
  493. Edit Shading Table
  494.  
  495.    Furthest to the right is a long vertical rectangle containing a representation of the currently selected
  496.  
  497. shading table.  This is the table editing window and it has two parts.  The left side is a blank white area with
  498.  
  499. lots of little black squares in it (exactly one square per row).  The right side is a set of horizontal bands of
  500.  
  501. different shades of gray (one band per row.)  There are 128 rows in the shading table.  Click the mouse in the
  502.  
  503. left-hand side of the editing area and drag the mouse around to set the positions of the little black squares.
  504.  
  505. It may take a little practice to get used to the way this works, but you should get used to it after a short
  506.  
  507. while.  When you release the mouse button, it will start redrawing the picture with the modified shading table.
  508.  
  509.    The first entry of the shading table (the topmost row) is unused.  The next 65 entries correspond to count
  510.  
  511. values from 0 to 64 (one entry per count value.)  The next 60 entries after that consist of 30 "blocks" of two
  512.  
  513. entries each.  Each block corresponds to 32 count values: the first block for counts from 65 to 96, the next
  514.  
  515. block for 97 to 128, etc.  Within each block the first shading table entry is used for all count values which
  516.  
  517. equal one or two modulo four (e.g. 65, 66, 69, 70, 73, 74, etc. ) and the second is used for the rest of the
  518.  
  519. count values.  The user should set both values in the block the same to get solid areas, and set them different
  520.  
  521. to get patterns of alternating stripes.  The 127th entry in the shading table is unused, and the last entry is
  522.  
  523. used for member points.
  524.  
  525.  
  526.  
  527. Mouse-Point
  528.  
  529.    Below all of the controls is a small box with the word "Mouse:" next to it.  If you click in the box, the
  530.  
  531. coordinates of the point under the cursor will be displayed at all times when the cursor is over the picture.
  532.  
  533. Click in the box again to turn it off.  You should use this only when you need it, because it makes the computer
  534.  
  535. continually check the mouse position and therefore slows down the evaluation and drawing of points considerably.
  536.  
  537.    This feature should be useful when you know the coordinates of something and want to find it quickly, however,
  538.  
  539. it requires some practice.  This is the easiest method I have found to locate areas quickly:
  540.  
  541.    Suppose we want to locate the area used for the benchmark example.  This is -.916 +.264 i, size = .062.  First
  542.  
  543. hit the Home icon, then the Select and Zoom icon.  The first time you zoom in, select -.9 +.2i as the center, and
  544.  
  545. zoom in by a factor of eight.  Then find -.91 +.26 i and zoom in again, etc.  Every time you zoom in by a factor
  546.  
  547. of eight you add one more digit to the coordinates of the point to use as the center of the next selection.
  548.  
  549. Continue this process until you have the required number of digits.  (Note that when you "Select and Zoom" it
  550.  
  551. will zoom in by 16 if you just click the mouse on a point.  To zoom in by eight you have to click and drag the
  552.  
  553. mouse a little to select the next-larger size square.)
  554.  
  555.  
  556.  
  557. Desk Accessories
  558.  
  559.    Super MANDELZOOM supports desk accessories.  Open them from the Apple menu as in any other program, and use
  560.  
  561. the Cut, Copy, Paste, etc. commands to accomplish editing functions within the D.A.'s.  (The Edit menu doesn't do
  562.  
  563. anything when no desk accessories are open.)  When you have desk accessories active, the D.A.'s window(s) always
  564.  
  565. remain on top of the program display (but you can still operate Super MANDELZOOM's controls if they are not
  566.  
  567. covered by something.)  Desk accessories make the program run significantly slower, so you should have all of
  568.  
  569. them closed when you are not using them.
  570.  
  571.    I use the Scrapbook to save images that I have grabbed with CMD-SHIFT-9 (see below).  I also use MockWrite to
  572.  
  573. read this documentation - when run from within Super MANDELZOOM, MockWrite (and any other desk accessories that
  574.  
  575. use 9-point Monaco) will display text in a 6-point font.
  576.  
  577.    I have tested the Scrapbook, Key Caps, Alarm Clock, Control Panel, MockWrite, Sleep, Utilities and a few
  578.  
  579. others within my program and they seem to work fine.  Some desk accessories will crash, often unpredicably.  For
  580.  
  581. example, one earlier version of MockWrite I tested caused a System Error (ID=2) when it tried to call SetWTitle
  582.  
  583. on its editing window and inadvertantly passed a nil WindowPtr.  Another, called ZoomIdle, occasionally closed
  584.  
  585. Super MANDELZOOM's window, causing its display to disappear permanently.  Therefore, if you are going to be using
  586.  
  587. some D.A. within Super MANDELZOOM, you should test it thoroughly first to see if it will crash.
  588.  
  589.  
  590.  
  591. Function Keys
  592.  
  593.    The four standard function keys (CMD-SHIFT-1, CMD-SHIFT-2, etc.) work in Super MANDELZOOM - I find CMD-SHIFT-3
  594.  
  595. most useful (it saves the screen to disk as a MacPaint document.)  When using a function key, you will often find
  596.  
  597. that the desired effect doesn't happen until you click the mouse somewhere.  This is because of an optimization
  598.  
  599. which allows the program to run significantly faster (by not calling GetNextEvent until EventAvail returns true.)
  600.  
  601.    In addition to the four standard Macintosh function keys, another (CMD-SHIFT-9) has been added to Super
  602.  
  603. MANDELZOOM.  This function key lets you copy a section of the screen to the clipboard.  To use it, hit
  604.  
  605. CMD-SHIFT-9, then select a rectangle anywhere on the screen, the same way you do in MacPaint (except you have to
  606.  
  607. start in the upper-left corner and finish in the lower-right corner, otherwise it might crash.)  When you have
  608.  
  609. selected a rectangle it will copy that part of the screen to the clipboard as a picture, which can then be pasted
  610.  
  611. into the Scrapbook or whatever.  (Note that MacPaint will not let you paste an entire 256x256 image at once.  I
  612.  
  613. believe FullPaint will but I haven't had a chance to try it.)
  614.  
  615.    FKEY 9 is a public-domain utility.  Unfortunately, I don't remember who created it.  You can use the Resource
  616.  
  617. Editor to install it in your System files.
  618.  
  619.  
  620.  
  621. Special Considerations for Users of 128K Macs, Switcher, Ram Disks, etc.
  622.  
  623.    This program tries to allocate a 256x256 array (about 65K of memory) when it starts up.  If it cannot allocate
  624.  
  625. this much space, it allocates a 16K array instead and notifys the user.  Side-effects of the small array include:
  626.  
  627.    • After computing a 256x256 image, the program will redraw the image at only 128x128 resolution when a new
  628.  
  629.      shading table is picked, when the current shading table is edited, or after the Help or Julia curve command.
  630.  
  631.      To see the image again at 256x256 resolution, the user must force re-evaluation by selecting the whole image
  632.  
  633.      (or the area of interest) with the Detail command.
  634.  
  635.    • The _Q_SEARCH routine normally used to locate the tips of "cusps" cannot be run on the small array.  There-
  636.  
  637.      fore, the user has to select the cusps with the Detail command to find anything that was missed.  (See the
  638.  
  639.      description of _IDLE_MODE below)
  640.  
  641.    Users of small Macs might also find that the program bombs when desk accessories are used.  Super MANDELZOOM
  642.  
  643. always leaves at least 20K of free space for desk accessories, but this will not be enough for certain D.A.'s
  644.  
  645. or combinations of D.A.'s.
  646.